
package kaizen.nomweb;

import java.io.*;

import java.util.Properties;
import java.util.Vector;

import javax.servlet.*;
import javax.servlet.http.*;

import kaizen.jdbc.DbAppUnivC;
import kaizen.jdbc.dbRecord;

// Referenced classes of package kaizen.nomweb:
//            Encriptacion, FunInsertEng, templates, utilerias

public final class FuncEng extends HttpServlet 
{

  public FuncEng()
  {
  }

  public static boolean cambioLlaves(Vector diccionario, 
                                     HttpServletRequest req) throws IOException
  {
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String llavePk = arr[3];
      String bd_campo = arr[2];
      if (llavePk.equals("nk") || llavePk.equals("pk"))
      {
        String req_campo = utilerias.tomaParametro(bd_campo, req);
        String llave_campo = utilerias.tomaParametro("llave_" + bd_campo, req);
        if (llave_campo == null)
          llave_campo = utilerias.tomaParametro("selected_" + bd_campo, req);
        if (req_campo != null && llave_campo != null && 
            !req_campo.trim().equals(llave_campo.trim()))
        {
          System.out.println("Llaves diferentes Comparo : " + 
                             req_campo.trim() + " con " + llave_campo.trim());
          return true;
        }
      }
    }

    return false;
  }

  public static String claseAparte(String tabla, 
                                   HttpServletRequest req) throws IOException
  {
    String proc_altas = tomaCampoTabla(tabla, req, 11);
    if (proc_altas.startsWith("clase_aparte="))
      return utilerias.generaValDer("clase_aparte=", proc_altas);
    else
      return "";
  }

  public static boolean coincideRegistro(Vector diccionario, 
                                         HttpServletRequest req, 
                                         dbRecord c_ksrecord, 
                                         int tamTitulos) throws IOException
  {
    boolean coincide = false;
    if (diccionario == null || req == null || c_ksrecord == null)
      return false;
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String campo = "";
      String c_campo = "";
      String llavePK = "";
      llavePK = arr[3];
      if (llavePK.startsWith("pk"))
        if (utilerias.tomaParametro(arr[2], req) != null)
        {
          campo = utilerias.tomaParametro(arr[2], req);
          c_campo = c_ksrecord.getField(i + tamTitulos + 1);
          if (campo != null && c_campo != null)
          {
            if (campo.trim().compareTo(c_campo.trim()) == 0)
              coincide = true;
            else
              coincide = false;
          } else
          {
            coincide = false;
          }
        } else
        {
          coincide = false;
        }
    }

    return coincide;
  }

  public void doGet(HttpServletRequest req, 
                    HttpServletResponse resp) throws ServletException, 
                                                     IOException
  {
    resp.setContentType("text/html");
    PrintWriter out = new PrintWriter(resp.getOutputStream());
  }

  public static String ejecutaProcesoForma(String tabla, String idioma, 
                                           HttpServletRequest req, 
                                           Vector diccionario, 
                                           String sqls) throws IOException
  {
    String salida = "";
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String nombre_prop = "/kaizen/" + sistema + "Web.properties";
    Properties props = utilerias.loadProperties(nombre_prop);
    String storeServlet = props.getProperty("storeServlet");
    if (storeServlet.equals("true") && 
        sqls.trim().toUpperCase().startsWith("BEGIN"))
    {
      String clase = utilerias.generaValIzq("(", sqls);
      clase = utilerias.generaValDer("begin", clase);
      System.out.println(".:.:::::...:.:::::.. JAVA STORE PROCEDURE Se ejecutara la clase " + 
                         clase);
      salida = utilerias.ejecutaStoreServlet(clase.trim(), req);
    } else
    {
      salida = ejecutaProcesoTabla(sqls, tabla, idioma, req, diccionario);
    }
    return salida;
  }

  public static String ejecutaProcesoTabla(String sqls, String tabla, 
                                           String idioma, 
                                           HttpServletRequest req, 
                                           Vector diccionario) throws IOException
  {
    String err = "";
    String ciifSql = "ciifsql=";
    String ciifSqlOr = "ciifsqlor=";
    String ciifSqlNum = "ciifsqlnum=";
    String ciifTipo = ciifSql;
    Vector vSqls = utilerias.generaVectorStr(sqls, "--if--");
    for (int cont = 0; cont < vSqls.size(); cont++)
    {
      sqls = (String)vSqls.elementAt(cont);
      sqls = sqls.trim();
      if (sqls.startsWith(ciifSql) || sqls.startsWith(ciifSqlOr) || 
          sqls.startsWith(ciifSqlNum))
      {
        String validacion = utilerias.generaValIzq(":", sqls);
        if (sqls.startsWith(ciifSqlOr))
          ciifTipo = ciifSqlOr;
        if (sqls.startsWith(ciifSqlNum))
          ciifTipo = ciifSqlNum;
        validacion = utilerias.generaValDer(ciifTipo, validacion);
        validacion = validaSQLCombo(validacion, req);
        validacion = validaSelects(validacion);
        Vector vValida = utilerias.generaVectorStr(validacion, "|");
        String res = "";
        if (ciifTipo.equals(ciifSql))
          res = FunInsertEng.fn_cIifCad(vValida, req);
        else if (ciifTipo.equals(ciifSqlOr))
        {
          if (!FunInsertEng.fn_cIifCadOr(vValida, req))
            res = "No se cumplio la validacion";
        } else
        {
          res = FunInsertEng.fn_cIif(vValida, req);
        }
        if (res.length() > 0)
        {
          System.out.println("No se pudo ejectuar el proceso porque no se cumplio la validacion");
          continue;
        }
        sqls = utilerias.generaValDer(":", sqls);
      }
      if (sqls.trim().length() > 0)
      {
        String sep = "\246";
        sqls = validaSQLComboSesion(sqls, req);
        sqls = validaSQLForm(tabla, sqls, idioma, req, diccionario);
        Vector vSql = utilerias.generaVectorStr(sqls, sep);
        for (int i = 0; i < vSql.size(); i++)
        {
          String s = (String)vSql.elementAt(i);
          System.out.println("PROCESO ESPECIAL TABLA " + s);
          err = err + DbAppUnivC.execStatementForms(s);
          utilerias.insertaBitacora(req, s);
        }

      }
    }

    return err;
  }

  public static String evaluaValorInicial(String valor, 
                                          HttpServletRequest req) throws IOException
  {
    String vInicial = "";
    valor = validaSQLCombo(valor, req);
    if (valor == null)
      valor = "";
    if (valor.trim().length() == 0)
      return "";
    if (valor.startsWith("select="))
    {
      String sql = utilerias.generaValDer("select=", valor);
      Vector vRecord = DbAppUnivC.execQuery(sql);
      if (vRecord.size() == 0)
        return "";
      dbRecord ksrecord = (dbRecord)vRecord.elementAt(0);
      vInicial = ksrecord.getField(1);
      String clave = ksrecord.getField(2);
      if (clave != null)
        vInicial = vInicial + "|" + clave;
    }
    if (valor.startsWith("proc="))
    {
      String proc = utilerias.generaValDer("proc=", valor);
      String procesosNom = "/clases/servlet/procesosNom?programa=" + proc;
      vInicial = templates.generaPlantilla(procesosNom, req);
      if (vInicial.indexOf("Error: 404") > 0)
        vInicial = "";
    }
    if (valor.startsWith("fechahoy"))
      vInicial = utilerias.fechaHoy();
    if (valor.startsWith("val="))
      vInicial = utilerias.generaValDer("val=", valor);
    if (valor.startsWith("paramsys="))
    {
      String paramSys = utilerias.generaValDer("paramsys=", valor);
      HttpSession session = req.getSession(true);
      vInicial = session.getAttribute(paramSys).toString();
    }
    if (vInicial == null)
      vInicial = "";
    return vInicial;
  }

  public static String generaCampoDetalle(String detalle, 
                                          HttpServletRequest req) throws IOException
  {
    System.out.println("@@@@ generaCampoDetalle : " + detalle);
    if (detalle.length() == 0)
      return "Detalle no especificado";
    String contenido = "";
    String titulos = utilerias.generaValIzq("|", detalle);
    String strReporte = utilerias.generaValDer("|", detalle);
    strReporte = utilerias.validaJoinFk(strReporte, req);
    strReporte = validaSQLCombo(strReporte, req);
    Vector vRecord = DbAppUnivC.execQuery(strReporte);
    Vector vTitulos = utilerias.generaVectorStr(titulos, ",");
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String nombre_prop = "/kaizen/" + sistema + "Web.properties";
    Properties props = utilerias.loadProperties(nombre_prop);
    String titColorRen = props.getProperty("titColorRen");
    String titFont = props.getProperty("titFont");
    String titTamFont = props.getProperty("titTamFont");
    String titColorFont = props.getProperty("titColorFont");
    String datColorRen = props.getProperty("datColorRen");
    String datFont = props.getProperty("datFont");
    String datTamFont = props.getProperty("datTamFont");
    String datColorFont = props.getProperty("datColorFont");
    contenido = contenido + "<tr>";
    for (int i = 0; i < vTitulos.size(); i++)
      contenido = 
          contenido + templates.tablaCol((String)vTitulos.elementAt(i), titColorFont, 
                                         titFont, titTamFont, titColorRen);

    contenido = contenido + "</tr>";
    int cont_reng = 0;
    for (int i = 0; i < vRecord.size(); i++)
    {
      dbRecord ksrecord = null;
      String bgColor = "FFFFFF";
      if (++cont_reng % 2 != 0)
        bgColor = datColorRen;
      ksrecord = (dbRecord)vRecord.elementAt(i);
      contenido = contenido + "<tr>";
      for (int a = 0; a < vTitulos.size(); a++)
      {
        String texto = "";
        if (ksrecord.getField(a + 1) != null)
          texto = ksrecord.getField(a + 1);
        if (texto.trim().length() == 0)
          texto = "&nbsp;";
        contenido = 
            contenido + templates.tablaCol(texto, datColorFont, datFont, 
                                           datTamFont, bgColor);
      }

      contenido = contenido + "</tr>";
    }

    detalle = templates.tabla("0", contenido, "100%");
    return detalle;
  }

  public static Vector generaLinkAd(Vector vIconosAd, dbRecord dbRegCon, 
                                    HttpServletRequest req) throws IOException
  {
    Vector vImagenLiga = new Vector();
    for (int i = 0; i < vIconosAd.size(); i++)
    {
      String icono_liga = "";
      String s_iconoAd = (String)vIconosAd.elementAt(i);
      String img = "";
      String des = "";
      String url = "";
      String sql = "";
      String con = "";
      boolean presentaLiga = true;
      s_iconoAd = s_iconoAd.trim();
      if (s_iconoAd.startsWith("icon_adi="))
      {
        s_iconoAd = utilerias.generaValDer("icon_adi=", s_iconoAd);
        img = utilerias.tomaValorLinea(s_iconoAd, "--img--", "--");
        des = utilerias.tomaValorLinea(s_iconoAd, "--des--", "--");
        url = utilerias.tomaValorLinea(s_iconoAd, "--url--", "--");
        sql = utilerias.tomaValorLinea(s_iconoAd, "--sql--", "--");
        con = utilerias.tomaValorLinea(s_iconoAd, "--con--", "--");
        dbRecord dbRegLink = null;
        if (url.trim().length() > 0)
        {
          if (sql.trim().length() > 0)
          {
            if (sql.indexOf("reg_con") > 0)
              sql = validaSqlIconos(sql, "reg_con", dbRegCon);
            sql = validaSQLComboSesion(sql, req);
            dbRegLink = utilerias.registroSqlUni(sql);
            url = validaSqlIconos(url, "reg_lnk", dbRegLink);
          }
          url = validaSQLComboSesion(url, req);
          if (url.indexOf("reg_con") > 0)
            url = validaSqlIconos(url, "reg_con", dbRegCon);
        }
        if (con.trim().length() > 0)
        {
          con = validaSqlIconos(con, "reg_con", dbRegCon);
          if (sql.trim().length() > 0 && 
              (con.indexOf("reg_lnk") > 0 || dbRegLink != null))
            con = validaSqlIconos(con, "reg_lnk", dbRegLink);
          int cont = utilerias.numRegSql(con);
          if (cont == 0)
            presentaLiga = false;
        }
        if (presentaLiga)
        {
          icono_liga = templates.ligaImagenTarget(img, url, "", des);
          vImagenLiga.addElement(icono_liga);
        }
      }
    }

    return vImagenLiga;
  }

  public static String generaOpJoinFK(String tabla, String campo, 
                                      String idioma)
  {
    String joinFK = "";
    joinFK = "select clave, opcion from dt_opciones where bd_tabla = ";
    joinFK = joinFK + "'" + tabla + "' and bd_campo = '" + campo;
    joinFK = joinFK + "' and idioma = '" + idioma + "'";
    return joinFK;
  }

  public static String generaOpJoinFK(String tabla, String campo, 
                                      String idioma, boolean ordenado)
  {
    String joinFK = "";
    joinFK = "select clave, opcion from dt_opciones where bd_tabla = ";
    joinFK = joinFK + "'" + tabla + "' and bd_campo = '" + campo;
    joinFK = joinFK + "' and idioma = '" + idioma + "'";
    if (ordenado)
      joinFK = joinFK + " order by clave";
    return joinFK;
  }

  public static String generaSelect(Vector diccionario, String tabla, 
                                    String idioma, 
                                    HttpServletRequest req) throws IOException
  {
    String select = "";
    tabla = tabla.trim();
    String from = tabla;
    String where = "";
    int dt = 0;
    String selectClaves = "";
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String llaveFK = arr[15];
      String llavePK = arr[3];
      String repVis = arr[17];
      String tipobd = arr[4];
      boolean muestra = false;
      if (repVis == null)
        repVis = "";
      if (repVis.startsWith("s"))
        muestra = true;
      if (muestra)
      {
        String camp = tabla + "." + arr[2];
        if (arr[16] != null && arr[16].length() > 0)
        {
          camp = arr[16];
          String campPk = "";
          if (camp.indexOf("|") > 0)
          {
            campPk = utilerias.generaValDer("|", camp);
            camp = utilerias.generaValIzq("|", camp);
          }
          from = from + " , " + utilerias.generaValIzq(".", camp);
          if (campPk.length() == 0)
            campPk = arr[2];
          if (where.length() > 0)
            where = 
                where + " and " + tabla + "." + arr[2] + " = " + utilerias.generaValIzq(".", 
                                                                                        camp) + 
                "." + utilerias.generaValDer(".", campPk);
          else
            where = 
                tabla + "." + arr[2] + " = " + utilerias.generaValIzq(".", camp) + 
                "." + utilerias.generaValDer(".", campPk);
        }
        if (llaveFK.startsWith("op") || llaveFK.startsWith("ck"))
        {
          dt++;
          String nomOp = "op" + String.valueOf(dt);
          camp = nomOp + ".opcion";
          from = from + " , dt_opciones  " + nomOp + " ";
          if (where.length() > 0)
            where = where + " and ";
          String where1 = " " + nomOp + ".bd_tabla = '" + tabla + "'";
          where1 = where1 + " and " + nomOp + ".bd_campo = '" + arr[2] + "'";
          where1 = where1 + " and " + nomOp + ".idioma = '" + idioma + "'";
          where1 = 
              where1 + " and " + nomOp + ".clave = " + tabla + "." + arr[2];
          where = where + where1;
        }
        if (tipobd.equals("fe"))
          camp = utilerias.conFechaNombreCampo(camp);
        if (select.length() > 0)
          select = select + ", " + camp;
        else
          select = select + camp;
      }
      if (llavePK.equals("pk") || llavePK.equals("nk"))
      {
        String clave_nom_camp = tabla + "." + arr[2];
        if (tipobd.equals("fe"))
          clave_nom_camp = utilerias.conFechaNombreCampo(clave_nom_camp);
        if (selectClaves.length() > 0)
          selectClaves = selectClaves + ", " + clave_nom_camp;
        else
          selectClaves = selectClaves + clave_nom_camp;
      }
    }

    System.out.println("generaSelectDetalle select pantalla: " + select);
    System.out.println("generaSelectDetalle select clave   : " + selectClaves);
    if (selectClaves.trim().length() > 0)
      select = select + "," + selectClaves;
    System.out.println("select");
    if (where.length() > 0)
      select = select + " from " + from + " where " + where;
    else
      select = select + " from " + from;
    select = "select " + select;
    return select;
  }

  public static String generaSelectClases(Vector diccionario, String tabla, 
                                          String idioma, 
                                          String sistema) throws IOException
  {
    String select = "";
    tabla = tabla.trim();
    String from = tabla;
    String where = "";
    int dt = 0;
    String selectClaves = "";
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String llaveFK = arr[15];
      if (llaveFK != null)
        llaveFK = llaveFK.trim();
      else
        llaveFK = "";
      String llavePK = arr[3];
      String repVis = arr[17];
      String tipobd = arr[4];
      boolean muestra = false;
      if (repVis == null)
        repVis = "";
      if (repVis.startsWith("s"))
        muestra = true;
      if (muestra)
      {
        String camp = tabla + "." + arr[2];
        if (arr[16] != null && arr[16].length() > 0)
        {
          camp = arr[16];
          String campPk = "";
          if (camp.indexOf("|") > 0)
          {
            campPk = utilerias.generaValDer("|", camp);
            camp = utilerias.generaValIzq("|", camp);
          }
          from = from + " , " + utilerias.generaValIzq(".", camp);
          if (campPk.length() == 0)
            campPk = arr[2];
          if (where.length() > 0)
            where = 
                where + " and " + tabla + "." + arr[2] + " = " + utilerias.generaValIzq(".", 
                                                                                        camp) + 
                "." + utilerias.generaValDer(".", campPk);
          else
            where = 
                tabla + "." + arr[2] + " = " + utilerias.generaValIzq(".", camp) + 
                "." + utilerias.generaValDer(".", campPk);
        }
        if (llaveFK.startsWith("op") || llaveFK.startsWith("ck"))
        {
          dt++;
          String nomOp = "op" + String.valueOf(dt);
          camp = nomOp + ".opcion";
          from = from + " , dt_opciones  " + nomOp + " ";
          if (where.length() > 0)
            where = where + " and ";
          String where1 = " " + nomOp + ".bd_tabla = '" + tabla + "'";
          where1 = where1 + " and " + nomOp + ".bd_campo = '" + arr[2] + "'";
          where1 = where1 + " and " + nomOp + ".idioma = '" + idioma + "'";
          where1 = 
              where1 + " and " + nomOp + ".clave = " + tabla + "." + arr[2];
          where = where + where1;
        }
        if (tipobd.equals("fe"))
          camp = utilerias.conFechaNombreCampo(camp);
        if (select.length() > 0)
          select = select + ", " + camp;
        else
          select = select + camp;
      }
      if (llavePK.equals("pk") || llavePK.equals("nk"))
      {
        String clave_nom_camp = tabla + "." + arr[2];
        if (tipobd.equals("fe"))
          clave_nom_camp = utilerias.conFechaNombreCampo(clave_nom_camp);
        if (selectClaves.length() > 0)
          selectClaves = selectClaves + ", " + clave_nom_camp;
        else
          selectClaves = selectClaves + clave_nom_camp;
      }
    }

    System.out.println("generaSelectDetalle select pantalla: " + select);
    System.out.println("generaSelectDetalle select clave   : " + selectClaves);
    select = select + "," + selectClaves;
    System.out.println("select");
    Vector vTabla = utilerias.obtieneTablaCache(tabla, sistema);
    if (vTabla.size() == 0)
      return "No hay datos";
    dbRecord ksrecord = (dbRecord)vTabla.elementAt(0);
    if (ksrecord.getField(4) != null)
    {
      String condicion_adicional = ksrecord.getField(4).trim();
      if (where.length() > 0)
        where = where + " and " + condicion_adicional;
      else
        where = condicion_adicional;
    }
    if (where.length() > 0)
      select = select + " from " + from + " where " + where;
    else
      select = select + " from " + from;
    select = "select " + select;
    return select;
  }

  public static String generaValIconSis(Vector vIconosAd, dbRecord dbRegCon, 
                                        HttpServletRequest req) throws IOException
  {
    String validacion = "";
    for (int i = 0; i < vIconosAd.size(); i++)
    {
      String icono_liga = "";
      String s_iconoSis = (String)vIconosAd.elementAt(i);
      String nom = "";
      String con = "";
      String sql = "";
      boolean presentaIcono = true;
      s_iconoSis = s_iconoSis.trim();
      if (s_iconoSis.startsWith("icon_sis="))
      {
        s_iconoSis = utilerias.generaValDer("icon_adi=", s_iconoSis);
        nom = utilerias.tomaValorLinea(s_iconoSis, "--nom--", "--");
        con = utilerias.tomaValorLinea(s_iconoSis, "--con--", "--");
        sql = utilerias.tomaValorLinea(s_iconoSis, "--sql--", "--");
        if (nom.trim().length() != 0 && con.trim().length() > 0)
        {
          if (sql.trim().length() > 0)
          {
            if (sql.indexOf("reg_con") > 0)
              sql = validaSqlIconos(sql, "reg_con", dbRegCon);
            sql = validaSQLComboSesion(sql, req);
            dbRecord dbRegLink = utilerias.registroSqlUni(sql);
            con = validaSqlIconos(con, "reg_lnk", dbRegLink);
          }
          con = validaSQLComboSesion(con, req);
          if (con.indexOf("reg_con") > 0)
            con = validaSqlIconos(con, "reg_con", dbRegCon);
          int cont = utilerias.numRegSql(con);
          if (cont == 0)
            validacion = validacion + nom.toUpperCase().substring(1, 1);
        }
      }
    }

    return validacion;
  }

  public static boolean isDato(String tabla, HttpServletRequest req, 
                               int col) throws IOException
  {
    boolean isD = false;
    Vector vTabla = utilerias.obtieneTabla(tabla, req);
    if (vTabla.size() == 0)
    {
      System.out.println("no encontre datos");
      return false;
    }
    dbRecord ksrecord = (dbRecord)vTabla.elementAt(0);
    String dato = ksrecord.getField(col);
    if (dato.startsWith("s"))
      return true;
    else
      return isD;
  }

  public static boolean isDato_Est(String tabla, HttpServletRequest req, 
                                   int col) throws IOException
  {
    boolean isD = false;
    Vector vTabla = utilerias.obtieneTabla_Est(tabla, req);
    if (vTabla.size() == 0)
      return false;
    dbRecord ksrecord = (dbRecord)vTabla.elementAt(0);
    String dato = ksrecord.getField(col);
    if (dato.startsWith("s"))
      return true;
    else
      return isD;
  }

  public static boolean isForma(String tabla, 
                                HttpServletRequest req) throws IOException
  {
    return isDato(tabla, req, 15);
  }

  public static boolean isForma_Est(String tabla, 
                                    HttpServletRequest req) throws IOException
  {
    return isDato_Est(tabla, req, 4);
  }

  public static boolean isProceso(String tabla, 
                                  HttpServletRequest req) throws IOException
  {
    return isDato(tabla, req, 3);
  }

  public static boolean isProceso_Est(String tabla, 
                                      HttpServletRequest req) throws IOException
  {
    return isDato_Est(tabla, req, 3);
  }

  public static boolean isSqrTable(String tabla, 
                                   HttpServletRequest req) throws IOException
  {
    return isDato(tabla, req, 2);
  }

  public static boolean isSqrTable_Est(String tabla, 
                                       HttpServletRequest req) throws IOException
  {
    return isDato_Est(tabla, req, 2);
  }

  public static boolean isTablaDetalle(String tabla, 
                                       HttpServletRequest req) throws IOException
  {
    return isDato(tabla, req, 7);
  }

  public static boolean muestraCampo(String validacion, String campo, 
                                     String tabla, 
                                     HttpServletRequest req) throws IOException
  {
    boolean muestraCampo = true;
    if (validacion.trim().length() == 0)
      return true;
    String res = 
      FunInsertEng.validaFuncionesInsert(validacion, campo, tabla, req, "s");
    if (res.trim().length() > 0)
      muestraCampo = false;
    return muestraCampo;
  }

  public static String obieneValorLlave(String campo, String valor, 
                                        String tipo, 
                                        String joinFK) throws IOException
  {
    String valorLlave = "";
    campo = 
        joinFK.substring(joinFK.toLowerCase().indexOf("select") + 6, joinFK.indexOf(","));
    campo = campo.toUpperCase().trim();
    if (campo.indexOf("DISTINCT") >= 0)
      campo = utilerias.replaceString1(campo, "DISTINCT", "");
    if (campo.indexOf("UNIQUE") >= 0)
      campo = utilerias.replaceString1(campo, "UNIQUE", "");
    campo = campo.trim();
    System.out.println("campo =" + campo);
    String condicion = validaTipo(campo, valor, tipo);
    if (joinFK.toUpperCase().indexOf("DT_OPCIONES") > 0)
      condicion = campo + " = '" + valor + "'";
    String sql_con = "";
    if (joinFK.toLowerCase().indexOf("where") < 0)
      sql_con = " where " + condicion;
    else
      sql_con = " and " + condicion;
    if (joinFK.toLowerCase().indexOf("order by") >= 0)
    {
      String cad1 = utilerias.generaValIzq("order by", joinFK);
      String cad2 = utilerias.generaValDer("order by", joinFK);
      joinFK = cad1 + " " + sql_con + " order by " + cad2;
    } else
    {
      joinFK = joinFK + sql_con;
    }
    System.out.println("Obtiene Valor llave");
    System.out.println(joinFK);
    Vector vRecord = DbAppUnivC.execQuery(joinFK);
    if (vRecord.size() == 0)
      return "";
    dbRecord ksrecord = (dbRecord)vRecord.elementAt(0);
    if (ksrecord.getField(2) == null)
    {
      return "";
    } else
    {
      valorLlave = ksrecord.getField(2).trim();
      return valorLlave;
    }
  }

  public static String obieneValorLlaveOp(String campo, String valor, 
                                          String tipo, 
                                          String joinFK) throws IOException
  {
    String valorLlave = "";
    String condicion = validaTipo("clave", valor, "ch");
    joinFK = joinFK + " and " + condicion;
    Vector vRecord = DbAppUnivC.execQuery(joinFK);
    if (vRecord.size() == 0)
      return "";
    dbRecord ksrecord = (dbRecord)vRecord.elementAt(0);
    if (ksrecord.getField(2) == null)
    {
      return "";
    } else
    {
      valorLlave = ksrecord.getField(2).trim();
      return valorLlave;
    }
  }

  public static String obtieneCampos(Vector diccionario) throws IOException
  {
    String campos = "";
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String tipocampo = arr[4];
      String nombre_campo = arr[2];
      if (tipocampo.equals("fe"))
        nombre_campo = utilerias.conFechaNombreCampo(nombre_campo);
      if (campos.length() > 0)
        campos = campos + "," + nombre_campo;
      else
        campos = campos + nombre_campo;
    }

    return campos;
  }

  public static String obtieneCamposInsert(Vector diccionario) throws IOException
  {
    String campos = "";
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String tipocampo = arr[4];
      String nombre_campo = arr[2];
      if (campos.length() > 0)
        campos = campos + "," + nombre_campo;
      else
        campos = campos + nombre_campo;
    }

    return campos;
  }

  public static String obtieneCamposPK(Vector diccionario) throws IOException
  {
    String campos = "";
    int icoma = 0;
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String llavePk = arr[3];
      String bd_campo = arr[2];
      String tipocampo = arr[4];
      if (llavePk != null)
        llavePk = llavePk.trim();
      if (llavePk.startsWith("pk"))
      {
        String nombre_campo = bd_campo;
        String tipobd = tipocampo.trim();
        if (icoma > 0)
          campos = campos + ", " + nombre_campo;
        else
          campos = campos + nombre_campo;
        icoma++;
      }
    }

    return campos;
  }

  public static String obtieneCamposValores(Vector diccionario, 
                                            HttpServletRequest req) throws IOException
  {
    String camposvalores = "";
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String bd_campo = arr[2];
      String tipocampo = arr[4];
      String html_tipocampo = arr[5];
      String mayusculas = arr[26];
      String valor = "";
      String campo = "";
      campo = bd_campo.trim();
      valor = utilerias.tomaParametro(bd_campo.trim(), req);
      String tipobd = tipocampo.trim();
      if (valor == null)
        valor = "NULL";
      if (valor.trim().length() == 0)
        valor = "NULL";
      valor = valor.trim();
      if (html_tipocampo.equals("check") && valor.equals("NULL"))
        valor = "0";
      if (tipocampo.equals("ch") && !valor.equals("NULL"))
      {
        if (mayusculas.equals("s"))
          valor = valor.toUpperCase();
        valor = "'" + valor + "'";
      }
      if (tipocampo.equals("fe") && !valor.equals("NULL"))
        valor = utilerias.configuraFechaInsert(valor);
      if (camposvalores.length() > 0)
        camposvalores = camposvalores + "," + campo + " = " + valor;
      else
        camposvalores = camposvalores + campo + " = " + valor;
    }

    return camposvalores;
  }

  public static Vector obtieneRegRep(Vector diccionario, boolean detalle)
  {
    Vector regRep = new Vector();
    int nCampo = 17;
    if (detalle)
      nCampo = 19;
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String rep_visible = arr[nCampo];
      if (rep_visible.startsWith("s"))
        regRep.addElement(diccionario.elementAt(i));
    }

    return regRep;
  }

  public static String obtieneSalidaSqr(String tabla, 
                                        HttpServletRequest req) throws IOException
  {
    String salida = "";
    Vector vTabla = utilerias.obtieneTabla(tabla, req);
    if (vTabla.size() == 0)
      return "";
    dbRecord ksrecord = (dbRecord)vTabla.elementAt(0);
    if (ksrecord.getField(9) != null)
      salida = ksrecord.getField(9);
    return salida;
  }

  public static String obtieneStoreTabla(String tabla, int tipo, 
                                         HttpServletRequest req) throws IOException
  {
    Vector vTabla = utilerias.obtieneTabla(tabla, req);
    dbRecord ksrecordTab = (dbRecord)vTabla.elementAt(0);
    int campo = 0;
    if (tipo == 0)
      campo = 11;
    if (tipo == 1)
      campo = 12;
    if (tipo == 2)
      campo = 13;
    if (tipo == 3)
      campo = 14;
    String str = utilerias.filtraReg(ksrecordTab, campo);
    return str;
  }

  public static String obtieneValores(Vector diccionario, 
                                      HttpServletRequest req) throws IOException
  {
    String valores = "";
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String valor = utilerias.tomaParametro(arr[2], req);
      String tipobd = arr[4];
      String encriptado = arr[25];
      String mayusculas = arr[26];
      if (valor == null)
        valor = "NULL";
      if (valor.trim().length() == 0)
        valor = "NULL";
      valor = valor.trim();
      if (arr[5].startsWith("sec"))
      {
        String sql = arr[24];
        if (sql != null)
        {
          sql = validaSQLCombo(sql, req);
          String val_Sql = utilerias.valorSqlUni(sql);
          valor = "0";
          if (val_Sql != null)
            valor = val_Sql;
          if (valor.toUpperCase().equals("NULL"))
            valor = "0";
        }
      }
      if (encriptado.equals("s"))
      {
        valor = Encriptacion.getEncriptar(valor);
        System.out.println("Entre a encriptar el valor es " + valor);
      }
      if (arr[5].equals("check") && valor.equals("NULL"))
        valor = "0";
      if (arr[4].equals("ch") && !valor.equals("NULL"))
      {
        if (mayusculas.equals("s"))
          valor = valor.toUpperCase();
        valor = "'" + valor + "'";
      }
      if (arr[4].equals("fe") && !valor.equals("NULL"))
        valor = utilerias.configuraFechaInsert(valor);
      if (valores.length() > 0)
        valores = valores + "," + valor;
      else
        valores = valores + valor;
    }

    return valores;
  }

  public static String obtieneValoresPK(Vector diccionario, 
                                        HttpServletRequest req) throws IOException
  {
    String valores = "";
    int icoma = 0;
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String llavePk = arr[3];
      String bd_campo = arr[2];
      String html_tipocampo = arr[5];
      String tipocampo = arr[4];
      String campo = "";
      String n_campo = "";
      if (llavePk != null)
        llavePk = llavePk.trim();
      if (llavePk.equals("pk") && 
          utilerias.tomaParametro(bd_campo.trim(), req) != null)
      {
        n_campo = bd_campo.trim();
        campo = utilerias.tomaParametro(bd_campo.trim(), req).trim();
        System.out.println(n_campo + " = " + campo);
        if (html_tipocampo.trim().startsWith("check") && 
            campo.trim().length() == 0)
          campo = "0";
        if (tipocampo.equals("ch"))
          campo = "'" + campo + "'";
        if (tipocampo.equals("fe"))
          campo = utilerias.configuraFechaInsert(campo);
        if (icoma > 0)
          valores = valores + " AND " + n_campo + " = " + campo;
        else
          valores = valores + n_campo + " = " + campo;
        icoma++;
      }
    }

    return valores;
  }

  public static String obtieneValoresReqDetalle(Vector diccionario, 
                                                HttpServletRequest req) throws IOException
  {
    String valores = "";
    int icoma = 0;
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String campo = "";
      String n_campo = "";
      String reqDetalle = "";
      reqDetalle = arr[18];
      if (reqDetalle.startsWith("s"))
      {
        if (utilerias.tomaParametro(arr[2], req) != null)
        {
          n_campo = arr[2];
          campo = utilerias.tomaParametro(arr[2], req).trim();
        }
        if (arr[5].startsWith("check") && campo.trim().length() == 0)
          campo = "0";
        if (arr[4].equals("ch"))
          campo = "'" + campo + "'";
        if (arr[4].equals("fe"))
          campo = utilerias.configuraFechaInsert(campo);
        if (icoma > 0)
          valores = valores + " AND " + n_campo + " = " + campo;
        else
          valores = valores + n_campo + " = " + campo;
        icoma++;
      }
    }

    return valores;
  }

  public static String obtieneValoresReqDetalleTabla(Vector diccionario, 
                                                     HttpServletRequest req) throws IOException
  {
    String valores = "";
    int icoma = 0;
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String campo = "";
      String n_campo = "";
      String reqDetalle = "";
      reqDetalle = arr[18];
      if (reqDetalle.startsWith("s"))
      {
        n_campo = arr[1] + "." + arr[2];
        campo = utilerias.tomaParametro(arr[2], req);
        if (campo == null)
          if (arr[4].startsWith("ch"))
            campo = "";
          else
            n_campo = "";
        if (arr[5].startsWith("check") && campo.trim().length() == 0)
          campo = "0";
        if (n_campo.length() > 0)
        {
          if (arr[4].equals("ch"))
            campo = "'" + campo + "'";
          if (arr[4].equals("fe"))
            campo = utilerias.configuraFechaInsert(campo);
          if (icoma > 0)
            valores = valores + " AND " + n_campo + " = " + campo;
          else
            valores = valores + n_campo + " = " + campo;
          icoma++;
        }
      }
    }

    return valores;
  }

  public static boolean paramBusqueda(String tabla, 
                                      HttpServletRequest req) throws IOException
  {
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String sql = 
      "select sql_busqueda from diccionario where bd_tabla = '" + tabla + 
      "' and bd = '" + sistema + "' and UPPER(sql_busqueda) like '%SELECT%'";
    String res = utilerias.valorSqlCache(sql);
    boolean bus = true;
    if (res == null)
      bus = false;
    return bus;
  }

  public static String quitaCamposTilde(String strResultado) throws IOException
  {
    if (strResultado == null)
      return null;
    if (strResultado.trim().length() == 0)
      return null;
    String campo = "";
    for (; strResultado.indexOf("~<") >= 0; 
         strResultado = utilerias.replaceString(strResultado, 
                                                "~<" + campo + ">~", ""))
    {
      int ini = strResultado.indexOf("~<");
      int fin = strResultado.indexOf(">~");
      campo = strResultado.substring(ini + 2, fin);
    }

    return strResultado;
  }

  public static String tomaCampoTabla(String tabla, HttpServletRequest req, 
                                      int col) throws IOException
  {
    String res = "";
    Vector vTabla = utilerias.obtieneTabla(tabla, req);
    if (vTabla.size() == 0)
    {
      return res;
    } else
    {
      dbRecord ksrecord = (dbRecord)vTabla.elementAt(0);
      res = utilerias.filtraReg(ksrecord, col);
      return res;
    }
  }

  public static boolean validaAccion(String strResultado, String tabla, 
                                     HttpServletRequest req) throws IOException
  {
    System.out.println("Valida Accion");
    if (strResultado.length() > 0)
    {
      String campo = "";
      System.out.println("Pase 1");
      System.out.println(strResultado);
      if (strResultado.indexOf("[") >= 0)
        for (; strResultado.indexOf("[") >= 0; 
             System.out.println(strResultado))
        {
          int ini = strResultado.indexOf("[");
          int fin = strResultado.indexOf("]");
          campo = strResultado.substring(ini + 1, fin);
          String valorReq = utilerias.tomaParametro(campo, req);
          if (valorReq == null)
            valorReq = "";
          else
            valorReq = valorReq.trim();
          strResultado = 
              utilerias.replaceString(strResultado, "[" + campo + "]", 
                                      valorReq);
        }

      System.out.println("Pase 2");
      if (strResultado.trim().length() > 0)
        strResultado = "SELECT * " + strResultado;
      System.out.println("SQL: " + strResultado);
      Vector vRes = DbAppUnivC.execQuery(strResultado);
      return vRes.size() > 0;
    } else
    {
      return true;
    }
  }

  public static String validaDelete(String delete, 
                                    HttpServletRequest req) throws IOException
  {
    String valDel = "";
    String sep = "|";
    System.out.println("validaDelete");
    delete = validaSQLCombo(delete, req);
    Vector vDelete = new Vector();
    vDelete = utilerias.generaVectorStr(delete, sep);
    for (int i = 0; i < vDelete.size(); i++)
    {
      String sql = "select * from " + (String)vDelete.elementAt(i);
      System.out.println("Delete del delete: " + sql);
      Vector vRecord = DbAppUnivC.execQuery(sql);
      if (vRecord.size() > 0)
        return utilerias.generaMsg("No se puede eliminar el registro porque esta ligado a otra tabla", 
                                   req);
    }

    System.out.println(" Pase validaDelete ");
    return valDel;
  }

  public static String validaLongitud(Vector diccionario, 
                                      HttpServletRequest req) throws IOException
  {
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String bd_tipocampo = arr[utilerias.DIC_BD_TIPOCAMPO];
      String html_tipocampo = arr[utilerias.DIC_HTML_TIPOCAMPO];
      if (bd_tipocampo.equals("ch") && html_tipocampo.equals("textarea"))
      {
        String campo = arr[utilerias.DIC_BD_CAMPO];
        String valor = utilerias.tomaParametro(campo, req);
        String s_longitud = arr[utilerias.DIC_BD_LONGITUD];
        if (valor == null)
          valor = "";
        if (s_longitud.trim().length() == 0)
          s_longitud = "0";
        int i_longitud = utilerias.aSmallInt(s_longitud);
        if (valor.length() > i_longitud)
          return "La longitud del objeto " + campo + " es " + valor.length() + 
            " y debe ser menor o igual a " + s_longitud;
      }
    }

    return "";
  }

  public static boolean validaPK(String strFK, String tabla) throws IOException
  {
    strFK = "SELECT * FROM " + tabla + " WHERE " + strFK;
    System.out.println("SQL: " + strFK);
    Vector vRes = DbAppUnivC.execQuery(strFK);
    return vRes.size() > 0;
  }

  public static boolean validaRequeridos(Vector diccionario, 
                                         HttpServletRequest req) throws IOException
  {
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String campo = "";
      if (arr[14].startsWith("s") && !arr[5].startsWith("check"))
      {
        if (utilerias.tomaParametro(arr[2], req) == null)
          return false;
        if (utilerias.tomaParametro(arr[2], req).trim().length() == 0)
          return false;
      }
    }

    return true;
  }

  public static String validaSQLCombo(String strResultado, 
                                      HttpServletRequest req) throws IOException
  {
    if (strResultado == null)
      return null;
    String campo = "";
    String valorReq;
    for (; strResultado.indexOf("[") >= 0; 
         strResultado = utilerias.replaceString(strResultado, 
                                                "[" + campo + "]", valorReq))
    {
      int ini = strResultado.indexOf("[");
      int fin = strResultado.indexOf("]");
      campo = strResultado.substring(ini + 1, fin);
      valorReq = utilerias.tomaParametro(campo, req);
      if (valorReq == null)
      {
        if (campo.trim().equals("sesion.compania"))
        {
          HttpSession session = req.getSession(false);
          valorReq = session.getAttribute("compania").toString();
          if (valorReq == null)
            valorReq = "";
        } else
        {
          valorReq = "";
        }
      } else
      {
        valorReq = valorReq.trim();
      }
      valorReq = utilerias.validaComillas(valorReq);
    }

    if (strResultado.indexOf("~<") >= 0)
    {
      strResultado = utilerias.replaceString(strResultado, "~<", "");
      strResultado = utilerias.replaceString(strResultado, ">~", "");
    }
    return strResultado;
  }

  public static String validaSQLComboBusqueda(String tabla, String sqls, 
                                              String idioma, 
                                              HttpServletRequest req, 
                                              Vector diccionario) throws IOException
  {
    System.out.println("                 validaSQLComboBusqueda");
    if (diccionario.size() == 0)
      return "";
    String ini = "[";
    String fin = "]";
    HttpSession session = req.getSession(true);
    String val_busqueda = "";
    if (session.getAttribute("dt_busqueda") != null)
    {
      val_busqueda = session.getAttribute("dt_busqueda").toString();
      if (!val_busqueda.startsWith(tabla))
        return sqls;
    } else
    {
      return sqls;
    }
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String bd_campo = arr[utilerias.DIC_BD_CAMPO];
      String campo_busqueda = arr[utilerias.DIC_CAMP_BUSQUEDA];
      if (campo_busqueda.equals("s"))
      {
        String cam_bus = tabla + "." + bd_campo + "=";
        if (val_busqueda.indexOf(cam_bus) >= 0)
        {
          String camp_param = ini + "bus_" + bd_campo + fin;
          String valorReq = utilerias.generaValDer(cam_bus, val_busqueda);
          if (valorReq.indexOf("|") >= 0)
            if (valorReq.indexOf("|") == 0)
              valorReq = "";
            else
              valorReq = utilerias.generaValIzq("|", valorReq);
          sqls = utilerias.replaceString(sqls, camp_param, valorReq);
        }
      }
    }

    return sqls;
  }

  public static String validaSQLComboSesion(String strResultado, 
                                            HttpServletRequest req) throws IOException
  {
    if (strResultado == null)
      return null;
    String strSalida = strResultado;
    String campo = "";
    String valorReq;
    for (; strResultado.indexOf("[") >= 0; 
         strResultado = utilerias.replaceString(strResultado, 
                                                "[" + campo + "]", valorReq))
    {
      int ini = strResultado.indexOf("[");
      int fin = strResultado.indexOf("]");
      campo = strResultado.substring(ini + 1, fin);
      valorReq = utilerias.tomaParametroSesion(campo, req);
      if (valorReq != null)
        strSalida = 
            utilerias.replaceString(strSalida, "[" + campo + "]", valorReq);
      valorReq = "";
    }

    if (strSalida.indexOf("~<") >= 0)
    {
      strSalida = utilerias.replaceString(strSalida, "~<", "");
      strSalida = utilerias.replaceString(strSalida, ">~", "");
    }
    return strSalida;
  }

  public static String validaSQLForm(String tabla, String sqls, String idioma, 
                                     HttpServletRequest req, 
                                     Vector diccionario) throws IOException
  {
    System.out.println("validaSQLForm " + sqls);
    if (diccionario.size() == 0)
      return "";
    String ini = "[";
    String fin = "]";
    for (int i = 0; i < diccionario.size(); i++)
    {
      String arr[] = (String[])diccionario.elementAt(i);
      String bd_campo = arr[utilerias.DIC_BD_CAMPO];
      String html_tipocampo = arr[utilerias.DIC_HTML_TIPOCAMPO];
      String bd_tipocampo = arr[utilerias.DIC_BD_TIPOCAMPO];
      String mayusculas = arr[utilerias.DIC_MAYUSCULAS];
      String valor_secuencial = arr[utilerias.DIC_VALOR_SECUENCIAL];
      String camp_param = ini + bd_campo + fin;
      if (sqls.indexOf(camp_param) >= 0)
      {
        String valorReq = utilerias.tomaParametro(bd_campo, req);
        if (valorReq == null)
          valorReq = "";
        valorReq = valorReq.trim();
        String edo = utilerias.tomaParametro("dic_estado", req);
        if (html_tipocampo.trim().startsWith("sec") && edo.equals("1131"))
        {
          String sql = valor_secuencial;
          if (sql != null)
          {
            sql = validaSQLCombo(sql, req);
            String val_Sql = utilerias.valorSqlUni(sql);
            if (val_Sql != null)
              valorReq = val_Sql;
            else
              valorReq = "0";
          }
        }
        if (valorReq.length() > 0)
        {
          if (html_tipocampo.startsWith("listasl"))
            valorReq = templates.obtieneValoresListaStore(bd_campo, req);
          valorReq = utilerias.validaComillas(valorReq);
          if (mayusculas.equals("s"))
            valorReq = valorReq.toUpperCase();
          if (bd_tipocampo.equals("fe"))
            valorReq = utilerias.configuraFechaInsert(valorReq);
        } else
        {
          valorReq = "NULL";
          sqls = 
              utilerias.replaceString(sqls, "'" + camp_param + "'", valorReq);
        }
        sqls = utilerias.replaceString(sqls, camp_param, valorReq);
      }
    }

    return sqls;
  }

  public static String validaSelects(String cadena) throws IOException
  {
    String sepI = "{";
    String sepF = "}";
    if (cadena.indexOf(sepI) >= 0 && cadena.indexOf(sepF) >= 0)
    {
      String cad1 = utilerias.generaValIzq(sepI, cadena);
      String cad2 = utilerias.generaValDer(sepF, cadena);
      String sql = utilerias.generaValDer(sepI, cadena);
      sql = utilerias.generaValIzq(sepF, sql);
      String res = utilerias.validaNulo(utilerias.valorSqlUni(sql));
      cadena = cad1 + res + cad2;
      if (cadena.indexOf(sepI) >= 0 && cadena.indexOf(sepF) >= 0)
        cadena = validaSelects(cadena);
    }
    return cadena;
  }

  public static String validaSqlIconos(String strResultado, String id, 
                                       dbRecord dbReg) throws IOException
  {
    if (strResultado == null)
      return strResultado;
    String strSalida = strResultado;
    String campo = "";
    String valorReq;
    for (; strResultado.indexOf("[") >= 0; 
         strResultado = utilerias.replaceString(strResultado, 
                                                "[" + campo + "]", valorReq))
    {
      int ini = strResultado.indexOf("[");
      int fin = strResultado.indexOf("]");
      campo = strResultado.substring(ini + 1, fin);
      valorReq = null;
      if (campo.startsWith(id))
      {
        String s_num = utilerias.generaValDer(id, campo);
        if (utilerias.esEntero(s_num))
        {
          int num = utilerias.aEntero(s_num);
          valorReq = dbReg.getField(num);
        }
      }
      if (valorReq != null)
        strSalida = 
            utilerias.replaceString(strSalida, "[" + campo + "]", valorReq);
      valorReq = "";
    }

    if (strSalida.indexOf("~<") >= 0)
    {
      strSalida = utilerias.replaceString(strSalida, "~<", "");
      strSalida = utilerias.replaceString(strSalida, ">~", "");
    }
    return strSalida;
  }

  public static String validaTipo(String campo, String valor, 
                                  String tipo) throws IOException
  {
    if (tipo.startsWith("ch"))
      valor = "'" + valor + "'";
    if (tipo.startsWith("fe"))
      valor = utilerias.configuraFechaInsert(valor);
    if (valor == null)
      valor = "";
    String strResultado = campo + " = " + valor;
    return strResultado;
  }
}
